Continuous Integration (CI) এবং Continuous Deployment (CD) হল সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়া, যা আপনাকে কোডের পরিবর্তন দ্রুত এবং স্বয়ংক্রিয়ভাবে পরীক্ষা, বিল্ড এবং ডিপ্লয় করতে সহায়তা করে। FastAPI অ্যাপ্লিকেশনের জন্য CI/CD কনফিগার করা আপনাকে অটোমেটেড টেস্টিং, কোড কভারেজ এবং প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন ডিপ্লয়মেন্ট দ্রুত করতে সহায়তা করবে।
এখানে আমরা GitHub Actions এবং Heroku প্ল্যাটফর্ম ব্যবহার করে FastAPI অ্যাপ্লিকেশনের জন্য CI/CD কনফিগার করার প্রক্রিয়া দেখব।
Step 1: GitHub রিপোজিটরি তৈরি করা
প্রথমে, আপনার FastAPI অ্যাপ্লিকেশনটি একটি GitHub রিপোজিটরিতে আপলোড করুন। যদি এটি না থাকে, তবে একটি রিপোজিটরি তৈরি করুন এবং সেখানে অ্যাপ পুশ করুন।
উদাহরণ: FastAPI অ্যাপের ফোল্ডার স্ট্রাকচার
my_fastapi_project/
├── app/
│ ├── main.py
│ ├── requirements.txt
├── .github/
│ └── workflows/
│ └── ci.yml
Step 2: requirements.txt ফাইল তৈরি করা
requirements.txt ফাইল তৈরি করে FastAPI এবং অন্যান্য প্যাকেজগুলোর ডিপেনডেন্সি উল্লেখ করুন:
fastapi
uvicorn
pytest
httpx
Step 3: GitHub Actions CI কনফিগার করা
GitHub Actions CI কনফিগারেশন ফাইল তৈরি করতে হবে, যা GitHub রিপোজিটরিতে /.github/workflows/ci.yml ফোল্ডারে থাকবে।
উদাহরণ: ci.yml ফাইল
name: FastAPI CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
pytest > result.log; tail -n 10 result.log
এখানে:
on: রিপোজিটরিতেmainব্রাঞ্চে কোড পুশ বা পুল রিকোয়েস্ট হলে CI প্রক্রিয়া শুরু হবে।jobs: একাধিক জব চলবে, যেখানে একাধিক স্টেপ রয়েছে:Checkout code: রিপোজিটরি থেকে কোড চেক আউট করা।Set up Python: Python 3.9 সেটআপ করা।Install dependencies:requirements.txtফাইল থেকে ডিপেনডেন্সি ইনস্টল করা।Run tests:pytestদিয়ে টেস্ট চালানো।
Step 4: GitHub Actions CI রান করা
এখন, আপনি GitHub Actions এর মাধ্যমে CI টেস্ট রান করতে পারবেন। GitHub রিপোজিটরি-তে কোড পুশ করার পর, CI প্রক্রিয়া শুরু হবে এবং টেস্টিং রিপোর্ট GitHub Actions এর মধ্যে দেখতে পারবেন।
Step 5: Continuous Deployment (CD) কনফিগার করা
FastAPI অ্যাপ্লিকেশনটি Heroku বা অন্য কোন প্রোডাকশন পরিবেশে ডিপ্লয় করার জন্য, Heroku একটি জনপ্রিয় পছন্দ। এখানে আমরা Heroku প্ল্যাটফর্ম ব্যবহার করে CD কনফিগার করব।
Heroku CLI ইনস্টল:
প্রথমে Heroku CLI ইনস্টল করুন এবং লগইন করুন:
curl https://cli-assets.heroku.com/install.sh | sh
heroku login
Step 6: Heroku অ্যাপ তৈরি করা
Heroku তে একটি নতুন অ্যাপ তৈরি করুন:
heroku create my-fastapi-app
এটি Heroku তে একটি নতুন অ্যাপ তৈরি করবে এবং ডোমেইন নাম প্রদান করবে।
Step 7: GitHub Actions CI থেকে CD কনফিগার করা
Heroku তে অ্যাপ ডিপ্লয় করার জন্য, GitHub Actions কে Heroku অ্যাকাউন্টের সাথে সংযুক্ত করতে হবে। এটি করার জন্য Heroku API Key ব্যবহার করা হয়।
Heroku API Key সেট করা
Heroku অ্যাকাউন্টে লগ ইন করার পর, API Key পেতে, টার্মিনালে নিচের কমান্ডটি রান করুন:
heroku auth:token
এরপর, GitHub রিপোজিটরিতে Secrets সেট করতে হবে:
- GitHub রিপোজিটরিতে গিয়ে Settings > Secrets এ যান।
- New Repository Secret এ ক্লিক করুন।
- Name হিসেবে
HEROKU_API_KEYএবং Value হিসেবে আপনার Heroku API Key দিন।
Step 8: GitHub Actions CD কনফিগার করা
এখন GitHub Actions ফাইলে Heroku ডিপ্লয় কনফিগারেশন যুক্ত করতে হবে। ci.yml ফাইলের নিচের অংশে Heroku ডিপ্লয় যোগ করুন:
উদাহরণ: ci.yml ফাইল - Heroku Deployment
name: FastAPI CI/CD
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
pytest > result.log; tail -n 10 result.log
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Heroku Deployment
run: |
git remote add heroku https://git.heroku.com/my-fastapi-app.git
git push heroku main
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
এখানে:
deployjobটিtestjobটির পরে চালানো হবে।git remote add herokuকমান্ড দিয়ে Heroku রিমোট রিপোজিটরি যোগ করা হচ্ছে এবংgit push heroku mainদিয়ে কোড Heroku তে ডিপ্লয় করা হচ্ছে।
Step 9: GitHub Actions CD রান করা
GitHub রিপোজিটরিতে main ব্রাঞ্চে কোড পুশ করার পর, CI/CD pipeline রান হবে। GitHub Actions টেস্ট চলানোর পর, অ্যাপ Heroku তে ডিপ্লয় হবে।
রিকোয়েস্ট উদাহরণ:
আপনার FastAPI অ্যাপ এখন Heroku তে ডিপ্লয় হবে, এবং আপনি অ্যাপের URL দিয়ে অ্যাপটি অ্যাক্সেস করতে পারবেন।
CI/CD কনফিগারেশন, বিশেষ করে GitHub Actions এবং Heroku ব্যবহার করে FastAPI অ্যাপ্লিকেশনটি সহজেই স্বয়ংক্রিয়ভাবে টেস্ট এবং প্রোডাকশন পরিবেশে ডিপ্লয় করা যায়। Continuous Integration (CI) কোডের পরিবর্তনগুলো দ্রুত পরীক্ষা এবং নিশ্চিত করতে সহায়ক, এবং Continuous Deployment (CD) প্রক্রিয়া আপনার অ্যাপ্লিকেশনকে স্বয়ংক্রিয়ভাবে প্রোডাকশন পরিবেশে পৌঁছে দেয়।
Read more